#lang racket


(require "../matrix.rkt")


(provide (struct-out parametric-curve)
         parametric-curve-transformation
         make-simple-parametric-curve)


(define-struct parametric-curve
  (domain object tangent normal binormal transformation))


(define (parametric-tangent-default)
  (λ (t)
    (error 'parametric-tangent-default "Not implemented")))

(define (parametric-normal-default)
  (λ (t)
    (error 'parametric-normal-default "Not implemented")))

(define (parametric-binormal-default)
  (λ (t)
    (error 'parametric-binormal-default "Not implemented")))

(define (make-simple-parametric-curve object-proc domain)
  (make-parametric-curve
   domain
   object-proc
   (parametric-tangent-default)
   (parametric-normal-default)
   (parametric-binormal-default)
   m.identity))